package com.mjf.scala.chapter10

/**
 * 隐式参数
 *    （1）同一个作用域中，相同类型的隐式值只能有一个
 *    （2）编译器按照隐式参数的类型去寻找对应类型的隐式值，与隐式值的名称无关。
 *    （3）隐式参数优先于默认参数
 */
object Scala02_TestImplicit {
  def main(args: Array[String]): Unit = {

//    def sayHi(name: String = "jack"): Unit ={
    def sayHi(implicit name: String): Unit ={
      println("hello--->" + name)
    }

    implicit var s: String = "jack"

    sayHi("lucy")
//    sayHi()   // 函数的参数有默认值，函数调用时可以不传递参数
    sayHi // 隐式参数在调用的时候，直接通过方法名称调用，不需要加括号


  }
}
